minio搭建单机/集群 您所在的位置:网站首页 linux minio启动命令 minio搭建单机/集群

minio搭建单机/集群

2023-02-10 01:12| 来源: 网络整理| 查看: 265

MinIO说明 MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。

1 单机版搭建 操作系统 搭建方式 linux docker容器 linux 宿主机 1.1 安装 1.1.1基于docker安装

docker search minio docker pull minio/minio docker run -p 9000:9000 minio/minio server /data

docker 启服务时指定挂在目录和登陆的用户名和密码

docker run -p 9000:9000 --name minio1 -e "MINIO_ACCESS_KEY=admin" -e "MINIO_SECRET_KEY=12345678" -v /Users/xiyou/my_minio/data:/data -v /Users/xiyou/my_minio/config:/root/.minio minio/minio server /data 启服务之后可通过http://127.0.0.1:9000访问

输入账号密码之后页面.png 创建bucket.png 查看文件在本机的存储.png

1.1.2基于linux平台搭建 Platform Architecture URL GNU/Linux 64-bit Intel https://dl.m in.io/server/minio/release/linux-amd64/minio

wget https://dl.min.io/server/minio/release/linux-amd64/minio chmod +x minio ./minio server /xiyou/my_minio/data

启动服务.png 打马处是我的名字,路径可以自己选择哈 后台运行:nohup ./minio server /xiyou/my_minio/data > /xiyou/my_minio/data/minio.log 2>&1 & 可以使用Accesskey和Secretkey作为账号和密码登陆页面使用

1.2单机版数据备份与恢复

将data数据目录拷贝至新服务器即可重启服务,恢复数据。 具体实施如下: 使用两个linux服务器作测试 node1: 10.211.55.5 node2: 10.211.55.8 步骤1: 在node2上采用linux单机版启动minio服务后,创建两个bucket,分别为bucket1和bucket2,在bucket中上传文件; 步骤2: 停止node2上的minio服务; 步骤3: 将node2上的my_minio文件夹整个拷贝至node1; scp -r ./my_minio [email protected]:/xiyou/ 步骤4: 在node1重新启服务

node1.png

2. 集群搭建(Distributed MinIO) 2.1 集群服务器配置及启动

既然单机的minio可以采用异结点备份的方式恢复数据,为什么还要使用Distributed MinIO? 数据保护/高可用/限制/一致性

启动一个分布式Minio实例,你只需要把硬盘位置做为参数传给minio server命令即可,然后,你需要在所有其它节点运行同样的命令。

注意

分布式Minio里所有的节点需要有同样的access秘钥和secret秘钥,这样这些节点才能建立联接。为了实现这个,你需要在执行minio server命令之前,先将access秘钥和secret秘钥export成环境变量。 分布式Minio使用的磁盘里必须是干净的,里面没有数据。 下面示例里的IP仅供示例参考,你需要改成你真实用到的IP和文件夹路径。 分布式Minio里的节点时间差不能超过3秒,你可以使用NTP 来保证时间一致。 在Windows下运行分布式Minio处于实验阶段,请悠着点使用。

参考:https://docs.min.io/cn/distributed-minio-quickstart-guide.html

名称 IP node1 10.211.55.5 node2 10.211.55.8 node3 10.211.55.9 node4 10.211.55.10 nginx 10.211.55.5

搭建的是4个结点的集群 示例: 启动分布式Minio实例,4个节点,每节点1块盘

minio集群架构.jpg 搭建命令: mkdir -p /xiyou/software cd /xiyou/software wget https://dl.min.io/server/minio/release/linux-amd64/minio chmod +x minio sudo MINIO_ACCESS_KEY=minio MINIO_SECRET_KEY=minio123 ./minio server http://10.211.55.5/minio_data http://10.211.55.8/minio_data http://10.211.55.9/minio_data http://10.211.55.10/minio_data 注解:./minio为minio文件路径,minio_data是自定义的minio的文件的存放路径 可采取nohup 加& 进行后台启动 启动完成.png 可访问任一结点: http://10.211.55.5:9000 http://10.211.55.8:9000 http://10.211.55.9:9000 http://10.211.55.10:9000

脚本方式启动 1.启动脚本

mkdir -p /opt/minio vim /opt/minio/run.sh #!/bin/bash export MINIO_ACCESS_KEY=minio export MINIO_SECRET_KEY=minio123 /xiyou/software/minio server http://10.211.55.5/minio_data \ http://10.211.55.8/minio_data\ http://10.211.55.9/minio_data\ http://10.211.55.10/minio_data

2.服务脚本

vim /usr/lib/systemd/system/minio.service # vim /etc/systemd/system/minio.service #ubuntu下的启动脚本 --------------------------------------------------------------------------------------- [Unit] Description=Minio service Documentation=https://docs.minio.io/ [Service] WorkingDirectory=/xiyou/software/ ExecStart=/opt/minio/run.sh Restart=on-failure RestartSec=5 # Specifies the maximum file descriptor number that can be opened by this process LimitNOFILE=65536 [Install] WantedBy=multi-user.target -------------------------------------------------------------------------------------- chmod +x /usr/lib/systemd/system/minio.service #centos的启动脚本 # chmod +x /etc/systemd/system/minio.service #ubuntu的启动脚本 #参考minio.service配置: https://github.com/minio/minio-service/blob/master/linux-systemd/minio.service

3.服务启动

chmod +x /opt/minio/run.sh systemctl daemon-reload #刷新配置 systemctl enable minio systemctl start minio systemctl status minio

启动脚本后,浏览器打开网址进行测试:

浏览器测试 2.2 集群高可用测试

单机Minio服务存在单点故障,相反,如果是一个N节点的分布式Minio,只要有N/2节点在线,你的数据就是安全的。不过你需要至少有N/2+1个节点 Quorum 来创建新的对象。 例如,一个8节点的Minio集群,每个节点一块盘,就算4个节点宕机,这个集群仍然是可读的,不过你需要5个节点才能写数据。

2.2.1 测试结点down机对集群读写的影响

只down一个结点node1,集群可以正常使用,可读可写

down掉一个node的集群可正常访问

2. down两个结点node1、node2,集群可读但不可写

down两个结点集群可读不可写 3.down三个结点node1、node2、node3,集群不能访问 down三个结点集群不能访问 2.2.2 模拟磁盘损坏影响

Minio使用纠删码erasure code和校验和checksum来保护数据免受硬件故障和无声数据损坏。 即便您丢失一半数量(N/2)的硬盘,您仍然可以恢复数据。 开始模拟------上传一个文件之后,会有两个文件part.1 xl.json part.1四个node结点的查看会不同,有乱码

四个node结点的xl.json 1、删掉node1中文件testMinio2.txt的part1,集群文件仍然可读; 2、删掉node1中文件testMinio2.txt的part1、node2中文件testMinio2.txt的part1,集群文件仍然可读; 3、删掉node1中文件testMinio2.txt的part1、node2中文件testMinio2.txt的part1、node2中文件testMinio2.txt的xl.part,集群仍然可读; 4、删掉node1中文件testMinio2.txt的part1、node2中文件testMinio2.txt的part1、node2中文件testMinio2.txt的xl.part、node1中文件testMinio2.txt的xl.part,集群仍然可读,但是浏览器中显示多了一个空文件夹testMinio2.txt; 集群中多出一个空文件夹 5、删掉node1中文件testMinio2.txt的part1、node2中文件testMinio2.txt的part1、node2中文件testMinio2.txt的xl.part、node1中文件testMinio2.txt的xl.part、node3中文件testMinio2.txt的part1,下载文件出现异常,无法读文件; 文件下载异常

2.3 备份恢复

通过将数据目录下的数据文件拷贝到异节点对应的数据目录下,再起minio集群,可以实现数据恢复。

3. nginx配置 3.1 nginx安装

根据自己的操作系统选择合适的安装方式 http://nginx.org/en/linux_packages.html

##我的os是centos7 #Install the prerequisites: sudo yum install yum-utils vim /etc/yum.repos.d/nginx.repo #with the following contents: ----------------------------------------------------------------------------------------- [nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key [nginx-mainline] name=nginx mainline repo baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/ gpgcheck=1 enabled=0 gpgkey=https://nginx.org/keys/nginx_signing.key --------------------------------------------------------------------------------------- sudo yum install nginx 3.2 nginx配置 #安装好nginx之后就可以启动nginx systemctl start nginx #查看下端口监听 netstat -lntup|grep 80 #查看下nginx.conf文件的配置 cat /etc/nginx/nginx.conf ---------------------------------------------------------------------------------- user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; gzip on; #include /etc/nginx/conf.d/*.conf; upstream minio_servers { ip_hash; server 10.211.55.5:9000; server 10.211.55.8:9000; server 10.211.55.9:9000; server 10.211.55.10:9000; } server { listen 80; server_name minio.dev.com; location / { proxy_set_header Host $host; proxy_pass http://minio_servers; proxy_redirect off; #proxy_set_header X-Real-IP $remote_addr; #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #client_body_buffer_size 10M; #缓冲区代理缓冲请求的最大字节数 #client_max_body_size 10G; #客户端最大文件上传大小为10G #proxy_buffers 1024 4k; #proxy_read_timeout 300; #proxy_next_upstream error timeout http_404; } } } -------------------------------------------------------------------------------- #location 内的注释的字段,建议可以在查看后根据需求修改 #可参考 https://docs.min.io/cn/setup-nginx-proxy-with-minio.html #https://www.nginx.com/blog/enterprise-grade-cloud-storage-nginx-plus-minio/ 3.3 配置hosts查看访问

配置hosts vim /etc/hosts 10.211.55.5 minio.dev.com 哇塞!可以正常访问啦!

域名访问 4. MinIO Client 4.1 安装mc

cd /xiyou/software/ wget https://dl.minio.io/client/mc/release/linux-amd64/mc

4.2 使用mc

chmod +x mc ./mc config host add mcminio http://10.211.55.8:9000 minio minio123 mc ls mcminio ./mc mb mcminio/third

通过mc创建bucket 参考:https://docs.min.io/docs/minio-client-quickstart-guide 其他的mc使用自己去参考官网

5. 那些年我们一起踩过的坑 5.1 node结点的ntp时间设置

node结点的ntp时间设置,别怪我没提醒你 设置系统时间为中国时区并启用NTP同步 yum install ntp //安装ntp服务 systemctl enable ntpd //开机启动服务 systemctl start ntpd //启动服务 timedatectl set-timezone Asia/Shanghai //更改时区 timedatectl set-ntp yes //启用ntp同步 ntpq -p //同步时间 参考https://www.cnblogs.com/tangxiaosheng/p/4986375.html

5.2 Allow port access for Firewalls

iptables -A INPUT -p tcp --dport 9000 -j ACCEPT service iptables restart 参考:https://github.com/minio/minio

5.3 解决网页“打转转”问题

ifconfig ens4 mtu 1450 这跟系统的MTU设置有关,默认一般会设置为1500,有的系统也会设置为1450。集群中的MTU值一定要保持一致,如果是有多张网卡的,也可以把多张网卡的MTU值设置一致。

参考文档: https://github.com/minio/minio/blob/master/README_zh_CN.md https://github.com/minio/minio



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有